INTRO NAUDIO: Die Library die hardwareunabh„ngi- ge Soundprogrammierung auf allen 16/32-Bit Ataris erm”glicht! Die ideale Bibliothek fr den Spieleprogrammierer oder denjenigen, dem fr sein Programm noch der entschei- dende Pfiff fehlt. Die Mulle KybernetiK NAUDIO-Library erm”glicht es auf einfachste Weise Samples und ProTrak- kermodule zu laden, abzuspielen und wieder zu speichern. Dabei erledigt NAUDIO die ganze Ar- beit und l„žt ihnen Raum und Zeit fr die eigent- liche Applikationsprogrammierung. NAUDIO wurde mit und fr den PURE C-Compi- ler/Assembler entwickelt. Durch die PURE-C ei- gene Funktionsaufrufskonvention ist es den mei- sten anderen C-Compilern versagt, NAUDIO zu benutzen. Assemblerprogrammierern hingegen sind keine Einschr„nkungen auferlegt. Da das Objektformat zu PURE-PASCAL kompatibel ist, sollte es m”glich sein, auch mit diesem Produkt NAUDIO-Applikationen zu schreiben. Hier ein kleiner Ausschnitt dessen, was die NAU- DIO-Software leistet: o L„dt 8-bit-Samples der Formate, 8SVX (Amiga IFF Format), 'rohe' Sampledaten und SampleStar Dateien sowie das Mulle KybernetiK NSVX Format o Speichert 8-bit-Samples im NSVX- und 8SVX-Format oder 'roh'. Wahlweise mit Kompression o Komprimiert Samples entweder verlustfrei, (die Kompressionsrate liegt typischerweise bei 10-40%), oder mit Verlust (Kompressionsrate immer 50%) o Spielt ProTracker Module o Spielt NT_COMP Segmentdateien o Benutzt folgenden Ausgabeger„te: PSG Soundchip (ST) SampleStar Sampler (Printer Port) STE Digital DMA Audio 2 x 8 Bit FALCON Digital DMA Audio 8 x 16 Bit o Die Ausgabefrequenz ist variabel o Automatische Erkennung von unsigned und signed Samples beim Laden 'roher' Sampledaten o Spielt bis zu acht Samples gleichzeitig, davon garantiert vier auf jedem Ausgabeger„t. o Lautst„rke und Abspielgeschwindigkeit der Samples k”nnen zur Abspielzeit ver„ndert werden o Abspielen erfolgt im Hintergrund, ungest”rt von Mausbewegungen! o Durch extrem optimierten Kode „užerst CPU-Zeit sparend o Durch modularen Aufbau vielseitig einsetz- und ver„nderbar Die Einfachheit der Benutzung von NAUDIO l„žt sich am besten durch zwei kleine Beispielpro- gramme verdeutlichen. Das erste l„dt ein Sample aus einer Datei und spielt dieses mit der Frequenz ab, mit der es aufgenommen wurde: #include char file[] = "..\\samples\\zarths.nsx" main() { n_sample *p; channel *q; naudio_init(); naudio_all(); naudio_engine( SAMPLES); if( p = nsample_load( file)) { naudio_start( 0); q = nsample_play( p, 0, 64, 1); while( q->play); naudio_done(); } return( 0); } Das n„chste Beispielprogramm - dem ersten sehr „hnlich - l„dt und spielt ein ProTracker Mo- dul: #include char file[] = "..\\modules\\beat_dis.mod"; main() { n_module *p; naudio_init(); naudio_all(); naudio_engine( NTRACKER); if( p = nmodule_load( file)) { naudio_start( 0); nmodule_play( p, 0, 0L, 0, 2); while( ntrack->song); naudio_done(); } return( 0); } Die Handhabung der NAUDIO-Software ist so einfach, daž selbst C-Anf„nger, die vielleicht ei- nen Monat Programmierpraxis haben, bereits diese Software benutzen und interessante Pro- gramme schreiben k”nnen Vorwort & Legalit„ten Die Dokumentation ist in drei Abschnitte unter- teilt. Da ist zum einen die "Einfhrung", die an- hand von kleinen Beispielprogrammen die NAU- DIO-Library unter die Lupe nimmt und als einfh- render Text firmiert. Mit Hilfe der Einfhrung sollte es selbst dem blutigen Anf„nger in krzester Zeit m”glich sein, 'geil' klingende Programme zu schreiben, um die Nachbarschaft und Anver- wandten damit zu beeindrucken. Die Kapitel des "Technischen Handbuchs" (T.H.) behandeln die technischen Aspekte von NAU- DIO und beleuchten auch obskurste Details. Das "Reference Manual" (R.M.) ist das Nachschlage- werk fr die Variablen und Funktionen der Biblio- thek. Das R.M. ist in Englisch! Da die PURE Libraries aber auch nicht anders dokumentiert worden sind, h„lt sich das Schamgefhl darber in Gren- zen. Die NAUDIO-Bibliothek ist natrlich! nach be- stem Wissen und Gewissen geschrieben worden und hat inklusive Dokumentationserstellung mehr als zwei Jahre Arbeit verschlungen. Es ist zwar nicht sooo kompliziert, digitalen Sound auf dem ST erzeugen(1), aber eine gut strukturierte Bcherei zu schreiben, die m”glichst vielen ver- schiedenen Anwendungen gerecht wird, darber hinaus einfach zu verwenden und dabei tech- nisch anspruchsvoll ist, braucht denn doch seine Zeit. Zudem ben”tigt die Dokumentation auch ein erkleckliches Zeitquantum. Mulle KybernetiK kann keinerlei Garantien oder Versprechungen in Bezug auf die Performanz der Bibliothek und Ihrer Einsetzbarkeit in allen Le- benslagen machen. Eine Haftung fr Folgesch„- den die aus der Benutzung oder fehlenden Nutz- barkeit der Bibliothek auftreten k”nnten, wird nicht bernommen. Trotz dieser legalen Einschr„nkungen, viel Spaž mit NAUDIO Installation Am besten: Sie machen die Installation nach "Gefhl". Die Includedateien mssen in einem Ordner NAUDIO in ihrem Includeverzeichnis ste- hen und die Objektdateien sollten in ihrem Libra- ryverzeichnis stehen. Ansonsten: Kopieren sie von Ihrer Diskette, den Ordner NAUDIO\HEADER\NAUDIO in den Ordner, der ihre Includedateien oder Headerdateien ent- h„lt. Kopieren sie den Inhalt des Ordners NAU- DIO\LIB in den Ordner der ihre sonstigen Funkti- onsbibliotheken enth„lt. Also sollte die Directory- struktur „hnlich dieser aussehen (es wird nur ein Ausschnitt gezeigt): ..\HEADER\ ..\HEADER\NAUDIO ..\HEADER\NAUDIO\ndefines.h ..\HEADER\NAUDIO\naudio.h etc. ..\LIB\PCSTART.O ..\LIB\PCGEMLIB.LIB ..\LIB\NAUDIO.LIB ..\LIB\HELPER.LIB ..\LIB\DACS\SDAC2.O ..\LIB\STD.TLK ..\LIB\NAUDIO.PRJ Bevorzugen sie einen CLI (Gulam, o.„.) anstelle der PURE-C Graphik-Shell (weise Entscheidung), dann geht es so am elegantesten: Kopieren sie den gesamten Ordner NAUDIO auf eine Partition ihrer Festplatte oder aber auf eine andere Diskette. Geben sie dem Compiler einen alternativen In- cludepfad an. Der PURE-C Compiler pcc erlaubt die mehrfache Nutzung des -I Switches. Also so z.B.: pcc -I\pc\include -I\naudio\header foo.c Auch ihr Linker muž wissen, wo die NAUDIO-B- chereien sind, die zu ihrem Programmtext dazu- gebunden werden sollen. Da Pure Software einen -L Switch zur Angabe eines Librarypfades vergessen hat, muž man sich auf andere Weise behelfen. Glcklicherweise erlaubt der Linker die Mehr- fachnutzung der -c Option, mit der Kommando- dateien eingelesen werden. Man erstellt sich also eine Datei namens "NAUDIO.TLK" in der s„mtli- che Pure Bibliotheken und die im NAUDIO\LIB Ordner stehenden Libraries angegeben werden: d:\lib\pcfltlib.lib d:\lib\pcextlib.lib d:\lib\pcstdlib.lib d:\lib\pctoslib.lib d:\lib\pcgemlib.lib d:\lib\pclnalib.lib d:\naudio\lib\naudio.lib d:\naudio\lib\nalloc.lib d:\naudio\lib\dacs\sdac2.o Beim Aufruf von plink hieže es dann: plink -o=foo.prg d:\lib\pcvstart.o foo.o -c=NAUDIO.TLK Da wie gesagt plink auch Mehrfachnutzung von -c erlaubt w„re auch folgendes m”glich plink -o=bar.prg d:\lib\pcvstart.o -c=projekt.tlk -c=NAUDIO.TLK Eine Beispiellinkdatei ist in dem LIB-Ordner als STD.TLK Datei zu finden. Leider ist es anscheinend in der PURE-C Gra- phikshell (also PC.PRG) immer noch nicht m”g- lich, einen zweiten Librarypfad anzugeben. Aus diesem Grunde scheint es fr PC-Benutzer zwin- gend zu sein, die Libraries aus dem NAUDIO\LIB Ordner in den Ordner der anderen PC Libraries zu kopieren. Wenn man m”chte kann man je- doch dem PC-Compiler einen zweiten Include- pfad angeben, indem man in dem Meneintrag Settings/Compiler hinter dem dort stehende De- faultwert einen zweiten Pfad, abgetrennt durch ein Semikolon ';', eingibt. Alternativ kann man natrlich auch in seinen Projektdateien feste Pfa- de angeben, wenn man so will. Anscheinend funktioniert es auch, wenn man die Projektdatei aus dem NAUDIO LIB-Ordner l„dt. EIne Beispielprojekt ist dem LIB-Ordner beige- fgt, daž „hnlich dem DEFAULT.PRJ das Top- Fenster kompiliert und linkt. Die Alternative NAUDIO benutzt fr die IRQ-Engines Timer B standardm„žig, was sich positiv in Verbindung mit anderen Anwenderprogrammen, die haupt- s„chlich Timer A benutzen, auswirken sollte. Wol- len sie selber Timer B benutzen, aha Spieleprog- rammierer, so schicken sie eine Leerdiskette mit frankiertem Rckumschlag (Ausland: 3.- DM Sur- face / 6.- DM Air Mail) an Mulle KybernetiK und sie bekommen postwendend (relativ) eine Library die Timer A benutzt. Portierungen Mit Portierungen zu anderen Compilern (inklusive GNU-C) oder Programmiersprachen (BASIC) sieht es sehr trbe aus.